Imaging volume data

ABSTRACT

A computer program and a computer-implemented system and method for generating a two-dimensional image of a volume data set representing an object volume from a selectable viewpoint. An object volume data set includes voxel values ordered by voxels along a row that extends in a first direction, rows across a plane that extends in the first direction and a second direction, and planes through an object volume that extend in the first and second directions and a third direction. In response to the definition of a view vector defining a view direction with respect to a viewpoint, shear and warp mappings are determined, as is which of the first, second and third directions is closest to the view vector. Pixels of a two-dimensional sheared image having a plurality of lines of pixels are then determined from voxel values of the object volume data set identified by the shear mapping. Where the view vector is closest to the first direction, the shear mapping maps rows of voxels in the first direction onto lines of pixels of the sheared image. An output image is then determined by mapping pixels of the sheared image according to the warp mapping. This output image can be displayed, printed, sent to a remote location or otherwise communicated to a user.

This application is a national phase of International Application No.PCT/GB01/01578 filed on Apr. 6, 2001, which was published in the Englishlanguage under Publication No. WO 01/78013.

BACKGROUND OF TH INVENTION

The present invention relates to imaging three-dimensional voxel data.In particular, the invention relates to the imaging of three-dimensionalvoxel data with respect to a desired viewpoint and view direction.

The imaging of three-dimensional objects is often referred to as volumerendering. Volume rendering finds applications in many fields. One suchfield is the rendering of medical data resulting, for example, from thescanning of the human or animal body using computer tomographs and otherX-ray scanners, nuclear magnetic resonance scanners and ultrasoundscanners, to name but a few examples.

The three-dimensional voxel data generated by modern scanning equipmentcan be very detailed and complex to interpret. For a physician to beable to make effective use of such scan data, it is desirable to providetools that can readily be manipulated in real-time. A physician may wishto render the data from different directions and from differentpositions with respect to the scanned object in order to be able toanalyse the scanned object and to detect, for example, abnormalities.The physician may wish to simulate rotation of the scanned object ornavigation through the scanned object, generating images in real-time asthe translations and rotations are effected. In order to providerelatively smooth motion effects, and simply to provide effectiveresponse times, rapid real-time rendering is desirable. Also, it isdesirable to enable such rapid, real-time rendering on conventionalcomputer workstations, for example a personal computer.

Many techniques are known for rendering three-dimensional voxel data.

One such technique employs a rotate-warp algorithm [1].

Another such technique [2] employs a shear-warp algorithm and is knownas shear-warp factorisation. In this approach, a viewing transformationmatrix is factorised into a 3D shear that is parallel to slices of areference volume an a 2D warp to produce a projection of the shearedvolume. Although the shear-warp factorisation provides for relativelyefficient three-dimensional rendering when the object is viewed fromcertain directions, the processing is significantly slower from otherviewing directions.

Accordingly, an object of the present invention is to provide improvedrendering of three-dimensional objects that can provide rendering thatis generally faster and less direction-dependent than conventionalshear-warp processing, and preferably permits real-time rendering onconventional personal computer hardware.

SUMMARY OF THE INVENTION

Particular and preferred aspects of the invention are set out in theaccompanying independent and dependent claims. Combinations of featuresfrom the dependent claims may be combined with features of theindependent claims as appropriate and not merely as explicitly set outin the claims.

One aspect of the invention provides a computer-implemented method ofgenerating a two-dimensional image of a volume data set representing anobject volume from a selectable viewpoint. The method includes theprovision, in storage, of an object volume data set. The object volumedata set comprises voxel values ordered by voxels along a row thatextends in a first direction, rows across a plane that extends in thefirst direction and a second direction, and planes through an objectvolume that extends in the first and second directions and a thirddirection. In response to definition of a view vector defining a viewdirection with respect to a viewpoint, shear and warp mappings aredetermined, and one of the first, second and third directions isdetermined as being closest to (i.e., forming the smallest angle withrespect to) the view vector. Pixels of a two-dimensional sheared image,the sheared image having a plurality of lines of pixels, are thenderived from voxel values of the object volume data set identified bythe shear mapping. The shear mapping maps rows of voxels in the firstdirection onto lines of pixels of the sheared image. An output image canthen be derived by mapping pixels of the sheared image according to thewarp mapping.

In this way, when the view vector is closest to the first direction,sequential memory access is still possible. This contrasts toconventional shear-warp methods where it is impossible to providesequential memory access in all view vector orientations.

More specifically, by aligning the rows of voxels from the firstdirection with lines of the sheared image, contiguous blocks of voxelscan be retrieved from storage in a manner that is consistent with thestorage of those voxels in memory. Processing primarily in accordancewith the organisation of the voxel data rather than in the order inwhich the pixels of an image to be displayed is counter-intuitive, butleads to more efficient processing as better use can be made of thestorage retrieval processes typically used in computer systems. Where amemory access is made, it is now conventional to retrieve a block or runof contiguous memory locations. This is partly due to the constructionof memory chips, partly due to the use of cache memories and partly tooptimise bus usage. By ordering processing dependent upon the order ofstoring voxels, it is more likely that successive voxel values needed toaccumulate a line of the sheared image will be available in a block ofretrieved data.

In a preferred embodiment of the invention, irrespective of whichdirection is closest to the view vector, the shear mapping maps rows ofvoxels in the first direction onto lines of pixels of the sheared image,whereby the benefits mentioned above apply for any orientation of theview vector with respect to the object to be rendered.

In an embodiment of the invention, the volume data set is held in mainstorage, and blocks of contiguously ordered voxel values being processedare temporarily transferred from main storage to cache memory. Thegeneration of the pixels of the two-dimensional sheared image ispreferably performed line by line of the sheared image. A cache memorycould be operable to hold all data required for processing at least onescan line of the two-dimensional image sheared in memory. A shearedimage buffer is provided for the accumulation of one line at a time ofthe sheared image. In an embodiment of the invention, a sheared imagebuffer for a line of pixel data is a first-level cache memory of amicroprocessor. Thus, for example, in an embodiment of the invention, asecond level cache could hold all rows of voxel data for generating aline of the sheared image and a first level cache could hold all pixelsof the line of pixels of the sheared image. In this manner, particularlyefficient processing is possible by effective use of memory resources.

The derivation of a line of pixels of the sheared image includesidentifying one or more rows of voxels in the first direction that maponto the line of pixels of the sheared image, and accumulatingcontributions from voxels from said one or more rows of voxels to deriverespective pixel values of the line of pixels of the sheared image. In apreferred embodiment, a record is made of the relationship betweensuccessive rows of voxels that contribute to a line of pixels. The samerelationships between rows can apply for any pixel of the sheared image.Therefore a record (for example in the form of a table) can be used toidentify the voxels that contribute to any pixel of the sheared image.

The accumulation of contributions for a pixel of the sheared image isterminated when a value representative of a predetermined intensity oropacity is reached. This approach is a bit like “early ray termination”to avoid unnecessary processing of voxels that will not contribute to apixel of the sheared image, for example because the pixel has alreadyreached a maximum intensity.

To also improve processing efficiency, pre-processing of the volume dataset can be employed to identify voxels having values that exceed apredetermined degree of opacity. The pre-processing can includegenerating a volume data set encoded as runs of values having opacitiesgreater than said predetermined opacity separated by skip lengths.Alternatively, the pre-processing can involve the generation of a recordindicating the allocation of the voxels having opacity values greaterthan the predetermined opacity. During generation of the sheared image,voxels with voxel values less than or equal to the predetermined valuecan be ignored during the accumulation of pixel values to avoidgenerating unnecessary computations and memory accesses.

The invention finds particular application to the rendering of scanneddata, for example medical scan data, seismic data, non-destructivetesting data, etc. Such data can be generated by one or more of thefollowing scanning techniques, by way of example only: particle and/orelectromagnetic energy scanning, sound or ultrasound scanning.

Another aspect of the invention provides a computer program productcomprising computer code, which, when stored in the memory of acomputer, is operable to control the processor of the computer toimplement a method as set out above. The computer program code can beprovided on a carrier medium. The carrier medium can, for example, be astorage medium. Alternatively, it can be a transmission medium.

A further aspect of the invention provides a system for generating atwo-dimensional image of a volume data set representing an object volumefrom a selectable viewpoint. The system includes storage for an objectvolume data set. The volume data set comprises values ordered by voxelsalong a row that extends in a first direction, rows across a plane thatextends in the first direction and a second direction, and planesthrough an object volume that extends in the first and second directionsand a third direction. A view processor is operable to determine, inresponse to definition of a view vector defining a view direction withrespect to a viewpoint, shear and warp mappings and determining one ofthe first, second and third directions as being closest to the viewvector. A shear processor is operable to derive pixels of atwo-dimensional sheared image having a plurality of lines of pixels fromvoxel values of the object volume data set identified by the shearmapping. The shear mapping maps rows of voxels in the first directiononto lines of pixels of the sheared image. A warp processor is operableto derive an output image by mapping pixels of the sheared imageaccording to the warp mapping.

According to another aspect of the invention there is provided acomputer-implemented method of generating a two-dimensional output imagefrom an object volume data set, the method comprising:

-   -   (a) providing an object volume data set comprising voxel values        ordered by voxels along a row that extends in a first direction,        rows across a plane that extends in the first direction and a        second direction, and planes through an object volume that        extends in the first and second directions and a third        direction;    -   (b) providing a view vector and a viewpoint, defining a view        direction according to the view vector and the viewpoint, and        determining one of the first, second and third directions as        being closest to the view vector;    -   (c) determining a shear mapping from the object volume data set        to a two-dimensional sheared image;    -   (d) determining a warp mapping from the two-dimensional sheared        image to a two-dimensional output image;    -   (e) deriving pixels of a two-dimensional sheared image having a        plurality of lines of pixels from voxel values of the object        volume data set identified by the shear mapping, wherein the        shear mapping maps rows of voxels in the first direction onto        lines of pixels of the sheared image; and    -   (f) deriving the two-dimensional output image by mapping pixels        of the sheared image according to the warp mapping.

One or more of the view processor, the shear processor and the warpprocessor can be implemented, partially or wholly, by softwarecontrolling the operation of general purpose hardware. However, one ormore of the view processor, the shear processor and the warp processorcan equally be implemented, partially or wholly, by special purposehardware, for example by an Application Specific Integrated Circuit(ASIC) or other appropriate technology.

BRIEF DESCRIPTION OF THE DRAWINGS

An exemplary embodiment of the present invention will be describedhereinafter, by way of example only, with reference to the accompanyingdrawings in which like reference signs relate to like elements and inwhich:

FIG. 1 is a schematic representation of a computer workstation for anembodiment of the invention;

FIG. 2 is a schematic block diagram illustrating an example of ahardware configuration of a workstation as illustrated in FIG. 1;

FIG. 3 is an illustration of an example of an image that can be outputby an example of the invention;

FIG. 4 is a schematic representation of various stages of a process ofimaging three-dimensional voxel data in accordance with the invention;

FIG. 5 is a schematic representation of a three-dimensional array ofvoxels to be imaged;

FIG. 6 illustrates a run-skip storage methodology for voxel data,;

FIG. 7 illustrates an alternative storage methodology for voxel data;

FIG. 8 illustrates a shear processing stage of the process of FIG. 4 inmore detail;

FIG. 9 illustrates stages in the rendering of three-dimensional voxeldata;

FIG. 10 illustrates steps in determining view parameters of the processof FIG. 4.

FIGS. 11A–11D are used to explain in more detail the difference betweenthe prior art and an embodiment of the invention;

FIG. 12 illustrates a shear processing stage of the process of FIG. 4.

FIGS. 13 and 14 illustrates voxel interpolation for voxel to pixelmapping;

FIG. 15 illustrates a warp processing stage of the process of FIG. 4;and

FIG. 16 shows a hardware implementation embodying the invention.

DETAILED DESCRIPTION

An embodiment of the present invention will be described hereinafter andin the context of a computer-implemented system, method and computerprogram product for the imaging of three-dimensional voxel data.

FIG. 1 is a schematic representation of a computer workstation used toprovide one embodiment of the present invention. Although the presentembodiment is described in terms of a computer program product thatcauses a computer, for example a personal computer or other form ofworkstation, to provide the functionality required an embodiment of theinvention, it will be appreciated from the following description thatthis relates to one example, only, of an embodiment of the presentinvention. For example, in an embodiment of the invention, a network ofcomputers, rather than a stand-alone computer, may implement anembodiment of the invention. Alternatively, or in addition, at leastsome of the functionality of the invention may be implemented by meansof special purpose hardware, for example in the form of special purposeintegrated circuits (e.g., Application Specific Integrated Circuits(ASICs)).

As shown in FIG. 1, the computer workstation 10 includes a system unit12, a display 14 (as shown displaying a two-dimensional image derivedfrom three-dimensional voxel data in accordance with an example of theinvention), a keyboard 18 and a mouse 20.

FIG. 2 is schematic block diagram illustrating an exemplaryconfiguration of a computer workstation 10 as shown in FIG. 1.

As shown in FIG. 2, the computer workstation 10 includes a bus 30 towhich a number of units are connected. A microprocessor (CPU) 32 isconnected to the bus 30. Read only memory 34 and random access memory 36are also connected to the bus 30. A display adapter 38 connects thedisplay 14 to the bus 30. A communications interface 40, for example anetwork interface and/or a telephonic interface such as a modem, ISDN oroptical interface, enables the computer workstation 10 to be connectedto other computers via, for example, an intranet or the Internet. Aninput device interface 42 connects one or more input devices, forexample the keyboard 18 and the mouse 20, to the bus 30. A storageinterface 43 enables access to a hard disk 44. An optical driveinterface 45 provides access to a CD ROM 46 or the like, and a floppydrive interface 47 provides access to a floppy disk drive 48. A printerinterface 49 also connects a printer 50. It will be appreciated that oneor more of the components illustrated in FIG. 4 may be omitted and/oradditional components may be provided, as required for a particularimplementation.

FIG. 3 is a schematic representation of a typical image than can begenerated with an embodiment of the invention.

FIG. 4 is an overview of the processing stages 80 in operating anembodiment of the invention.

In pre-processing operations, original object volume data is captured inStep 82 by suitable voxel data capture apparatus. This could be formed,for example, by a computer tomographic scanner, a nuclear resonancescanner, an ultrasound scanner, etc. The captured image data ispre-processed to generate volume data in the form of a three-dimensionalarray of voxel data. This data can be stored directly to generate the3-D object voxel data as identified at Step 86 in FIG. 4. Alternatively,further pre-processing of that image data can be performed in Step 84 aswill be described in more detail later.

The data is stored in Step 86 in volume data storage as a volume dataset representing voxel values. The voxel values are ordered by voxelsalong a row that extends in a first direction, rows across a plane thatextends in the first direction and a second direction, and planesthrough a volume that extends in the first and second directions and athird direction. Thus the voxel data is ordered by voxels within a row,rows within a plane (or slice) and planes within a volume. The voxeldata is stored in memory in essentially this order, although, as will beexplained later, various enhancements to the storage methodology can beemployed to enhance efficiency.

Once the basic object voxel data is stored, processing of that data inaccordance with an embodiment of the invention may proceed.

In Step 88, a view vector (view point and direction) is determined. Thiscould be performed by some automated process, for example by a programoperable to generate a video comprising a series of views, oralternatively by a user using conventional input devices such as thekeyboard 18 and mouse 20 shown in FIG. 1.

Once the view vector has been determined, a computation is made in Step90 as to the relationship between the view vector and the co-ordinatesaxes of the co-ordinate system in which the object is defined. In orderto achieve this, the view vector is expressed as a view matrix in aconventional manner. Appropriate shear and warp parameters are thendetermined, as described later, for processing the voxel data to derivea two-dimensional image of the object as viewed along the view vector.

In Step 92, successive lines of the two-dimensional sheared imagerepresentation of the object represented by the voxel data are computedand the results are stored in Step 94, line-by-line, in 2-D shearedimage storage 94.

In Step 96, the lines of the sheared image representation from thesheared image storage are then warped to generate the desired2-dimensional image of the object represented by the voxel data asviewed along the view vector. The final image is accumulated in Step 98in to final image storage, which can be stored in main storage.

For the skilled person, it will be appreciated that the overallprocessing strategy is similar to that employed in conventionalshear-warp processing. However, there are significant differencesbetween conventional shear-warp processing and processing in accordancewith an embodiment of the invention. These differences providesignificant technical advantages as will become apparent from thefollowing. In particular, in an embodiment of the invention, processingof the voxel data to generate the sheared image representation is chosento optimise the access to the voxel data from memory, thus significantlyimproving processing efficiency and the use of the available systemresources.

FIG. 5 is a schematic representation of the voxel data that makes up avolume data set 100 of an object to be imaged. FIG. 5 attempts torepresent a three-dimensional array of voxels 104 with respect to i, jand k axes, with the origin at the top, left, front corner 102. Eachvoxel 104 is associated with one or more values representative of thatvolume in space. The value or values can relate to the intensity of thevoxel, for example relating to the density of that volume in space.However, the value or values could, for example, relate to valuesderived from a scan of the object in space as some function of thescanned values. For example, they could represent the opaqueness(opacity), or transparency, colour, etc, of the volume in space. Forsimplicity, in the following, reference will be made to an opacityvalue, although it should be understood that this could alternatively bea transparency value, or for example a density value, as appropriate.Also, for convenience of explanation only, the terms voxels, rows,planes (or slices) and object volume are defined with reference to thedisposition of the object space as shown in FIG. 5, although it shouldbe appreciated that other definitions could be given.

A line of voxels (say 104(0,0,0), 104(1,0,0), 104(2,0,0), . . . ,104(1,0,0)) extending horizontally, as shown in FIG. 5, form a row (say106(1,0)). A series of rows (say 106(0,0), 106(1,0), 106(2,0), . . . ,106(J,0)) extending perpendicularly to the rows in a vertical direction,as shown in FIG. 5, form a plane (or slice) (say 108(0)). A series ofplanes (say 108(0), 108(1), 108(2), . . . , 108(K)) extendingperpendicularly to the rows and planes perpendicularly to the plane ofthe page, as shown in FIG. 5, form an object volume 100.

FIG. 6 shows one storage methodology for the voxel data in the volumedata storage 86. In this simple storage methodology, successive valuesfor each of the voxels (104(0,0,0)–104(I,0,0)) from left to right asillustrated in FIGS. 5 and 6 along the horizontal row 106(0,0) at thetop and front of the volume are stored in sequential addresses instorage. After this, successive voxel values from left to right for therow 106(1,0) below the first row are stored in the next set of addressesin storage. This then continues down the front plane 108(0) of theobject volume 100. At the bottom right of the front plane 108(0) of thevoxel data, the same approach to voxel data storage is applied for theplane 108(1) behind the front plane, as so on for the whole objectvolume.

It is to be noted at this stage, that conventional computer technology,especially with the use of cache storage means that significant gains inprocessing efficiency can be made where data required for processing isto be found in contiguous storage locations in memory. Where a memoryaccess is made, it is conventional to retrieve a block or run ofcontiguous memory locations. This is partly due to the construction ofmemory chips, partly due to the use of cache memories and partly tooptimise bus usage.

Conventional shear-warp processing is based on generating the pixelvalues of a sheared image in a number of passes. Where the viewdirection is nearest to either the second (j) or third (k) axes, thenthe algorithm could employ relatively efficient access to the voxeldata. However, where the view vector is nearest in orientation to thefirst (i) axis, inefficient access to the voxel data is necessaryresulting in significantly slower image generation. An embodiment of theinvention avoids such a slow axis, by employing a different, and moreefficient approach to sheared image data generation, in at least theaxis where the view vector is nearest to the first (i) axis.

The methodology employed by the present invention will be described inmore detail below. However, before proceeding to a fuller description,reference is made to FIG. 7, which illustrates a run-skip approach tostorage of a working subset of the voxel data of the volume data set. Inthe initial, optional pre-processing Step 84 shown in FIG. 4, the voxeldata illustrated with reference to FIGS. 5 and 6 can be processed toremove pixels having an opacity value of below a given threshold. Arevised representation of the object can be stored as a starting pointat Step 86 for processing with voxels that are less opaque than thethreshold deleted and replaced by a count of the deleted voxels. As aresult, the revised object volume representation 110 will include, say,a run of voxels 112, followed by a skip value 114 given a voxel count tothe next run of voxels 116, followed by a skip value 118 given as acount of voxels, and so on. The same basic ordering of voxels asdescribed with reference to FIG. 6 is employed, with the voxel orderingbeing by voxels within a row, rows within a plane and planes within theobject volume to form the complete object volume 110. The reduction indata to be accessed for processing results in a reduction in busbandwidth needed and accordingly to a reduction in processing time.Typically, the threshold taken for the opacity value is taken at orbelow the lowest level of opacity of potential interest, in order thatthe working sub-set of FIG. 7 is effectively complete, as least as faras any anticipated processing is concerned.

FIG. 8 represents an alternative to the representation in FIG. 7. Inthis case, the full object data 110 is retained. A further array 119 inthe form of a bit map comprising one bit for each voxel is defined instorage. Each bit is either set to one value (say 1) where thecorresponding voxel is above the opacity threshold or set to anothervalue (say 0) where the corresponding voxel is below the opacitythreshold. By only accessing voxels with significant data, this approachcan also result in a reduction in bus bandwidth needed and a reductionin processing time.

As further alternative, the 3-D volume data set 110 and/or the bit map119 could be stored using a run-skip approach. Where a run-skip approachis adopted for the 3-D volume data set 110, the bit map identifies theruns of bits that are retained using one bit value, and the skippedvalues using another bit value. Where a run-skip approach is adopted forthe bit map 119, the storage required for the bit map can also bereduced in a manner similar to that described with reference to FIG. 7.In a further example of a run-skip approach, a matrix of start and endpointers to the beginnings and ends of run-skip data sets are arrangedon an i,j co-ordinate basis.

There now follows a description of the operation of an embodiment of theinvention for generating a two-dimensional image of a three-dimensionalobject

FIG. 9A represents an object 120 in a region 100 in i,j, k object space122. The region 100 corresponds to the object volume data set 100 storedat Step 86 in FIG. 4. An arbitrary view vector VV is also shown. Thiscould comprises the full voxel data representation as described withreference to FIG. 6, or could comprise one of the alternativerepresentations described with reference to FIG. 7 or 8, or some otheralternative representation of the object volume data set 100 of FIG. 5.The actual data stored is typically derived as some function of the datathat results from the scan of an object. The data can be opacity values,colour values, etc, rather than pure scan intensity values.

FIG. 9B represents a complete sheared two-dimensional image 130representation in sheared image (l, m, n) space, corresponding to thesheared image storage in Step 94 in FIG. 4. The dimension n isorthogonal to l and m, that is n is perpendicular to the plane definedby l and m and is parallel to the view vector VV. The aim of theshearing operation in an embodiment of the invention is to provide asheared image such that rows of voxels in the i direction always maponto lines of pixels of the sheared image in the l direction, in orderto provide efficient processing.

FIG. 9C represents the final two-dimensional image 130 in final image(x, y, z) space, corresponding to Step 98 in FIG. 4. It should be notedthat n=z, and there is an affine transformation of l and m to x and y.The warp processing of Step 96 of FIG. 4 employs warp parametersdetermined in Step 90 of FIG. 4 to convert the sheared objectrepresentation into the final image representation.

FIG. 10 is a flow diagram for describing Step 90 of FIG. 4 in moredetail.

In Step 140, a determination is made which of the i, j and k axes of theobject coordinate space has an orientation closest to the orientation ofthe view vector. This can be performed using conventional matrixcomputation by finding the dot product of the view vector with therespective ones of the i, j and k axes and determining the axis with anorientation closest to the view vector that provides the largest dotproduct with the view vector. The appropriate shear matrix can then bedetermined.

In Step 142, a shear matrix is determined such that the i axis of FIG.9A maps onto the l axis of FIG. 9B, that is such that a rows of voxelsin the i direction map onto lines of pixels in the sheared image. Inthis example, the rows of voxels in the i direction map onto horizontalrows of pixels in the scan direction l of the sheared image. The m and naxes are set to be orthogonal to each other and the l axis.

In Step 144, a warp matrix is generated for effecting a 2D warptransformation from the sheared image to the final image. Here the warpmatrix is the product of the inverted shear matrix and the view matrix.

Although the present invention employs shear and warp stages, anembodiment of the present invention includes significant improvementswith respect to the traditional shear warp technique. By providing ashear that maps rows of voxels onto rows of pixels positions in thesheared image, more efficient processing is possible, particularly wherethe view vector is closest to the i direction. This is because thevoxels needed for contiguous pixels on a line of the sheared image aremore likely to be found in contiguous storage locations in voxelstorage.

The difference between the mapping performed in accordance with theinvention, and the mapping employed by a traditional shear warp process,should be come more clear from the following description of FIG. 11. Ineach of FIGS. 11A to 11D, the view vector VV extends perpendicular tothe plane of the drawing and into the drawing.

FIG. 11A illustrates the generation of a sheared image as employed in aconventional shear-warp process where the view vector is closest to thei axis of object space. It is assumed that the view vector is close tobut not parallel to the i axis in object space. As shown in FIG. 11A,the k axis is aligned to correspond to the l axis of the sheared image.Processing of the pixels of the sheared image is performed in the orderrepresented by the arrow S starting, for example, with the voxels A. Asthe voxels are stored in the order (i, j, k), this means that eachsuccessive voxel required for computing the row of the pixels of thesheared image is to be found in a different plane of voxels (i.e. withsignificant separations in memory). In generating the pixels of thesheared image, the contribution(s) from voxels through the object areaccumulated, with successive layers of voxels being processed from frontto back as represented by the arrow T. Although processing is shown asbeing from front to back, it could alternatively be effected from backto front.

FIG. 11B illustrates the generation of a sheared image for an embodimentof the invention, assuming the same object and the same view vector thatis closest to the i axis. Once again, it is assumed that the view vectoris close to but not parallel to the i axis in object space. It canclearly be seen that the shear applied in FIG. 11B in an embodiment ofthe invention is different from that applied in FIG. 11A in theconventional shear warp process. In an embodiment of the invention, ashear is employed that maps the i axis onto the l axis of the shearedimage. Processing of the pixels of a line of the sheared image in thedirection T is then aligned with the organisation of voxels in memory.As the voxels are stored in the order (i, j, k), this means that eachsuccessive voxel required for computing the row of the pixels of thesheared image is to be found in closely adjacent locations in memory.

The difference between the shear of FIG. 11A and the shear of FIG. 11Bcould be represented as a notional additional shear AS shown in FIG.11B. However, it should be understood that an embodiment of theinvention does not need to provide two separate shear operations, butrather that a preferred embodiment of the invention employs a singleshear operation that could be though of equivalent to a conventionalshear plus the notional additional shear AS.

FIG. 11C illustrates the generation of a line of pixels showing thecontributions from the different layers of the object. It can be seenthat the rows of voxels through the object that contribute to a line ofpixels LP of the sheared image steps from layer to layer (plane toplane) of the object.

The calculation of the rows of voxels of the sheared object thatcontribute to a line of pixels LP of the sheared image can be calculatedon the fly. Alternatively, this can be pre-calculated and held in arecord (for example a shear table) indicating the relative relationshipbetween rows in successive planes that is required to generate a line ofpixels. As the same relative relationship will apply for each line ofthe sheared image, the pre-calculation of this relationship, and storagein, for example, a shear table, can be an effective technique forimproving processing performance. A shear table can be computed as partof the view parameter determination process 90 of FIG. 4.

FIG. 11D illustrates the generation of the sheared image where the viewdirection is nearest to the j or k axes of the object space. In eachcase, the shear mapping is chosen such that the i axis maps onto the laxis of the sheared image space. Where the axis is nearest to the viewvector, then the k axis is arranged to map to the m axis of the shearedimage space. Where the k axis is nearest to the view vector, then theaxis is arranged to map to the m axis of the sheared image space. FIG.11D also shows the set of rows of voxels that map onto the line ofpixels LP. It can be seen therefore, that processing of the pixels of aline LP of the sheared image in the direction T can be aligned with theorganisation of the voxels in memory. As the voxels are stored in theorder (i, j, k), this means that each successive voxel required forcomputing the row of the pixels of the sheared image is to be found inclosely adjacent locations in memory.

As mentioned above, arranging that processing of voxels takes account ofthe storage of the voxels in memory can greatly improve processing ofthe image. By providing for processing in this manner, image renderingcan be of a comparable speed irrespective of which axis is closest tothe view vector, avoiding a “slow axis”. When viewed in matrix terms,the shear is arranged such that memory access is performedpreferentially according to the inner loop (i) where the matrix axes areexpressed as (i, j, k).

The explanation of the generation of pixel values represented in FIGS.11C and 11D is based on a point sampling approach where the value of onevoxel per layer is taken to contribute to the value of a pixel. Thiswill be explained in further detail with respect to FIG. 12.

FIG. 12 illustrates in more detail one example of the generation of asheared image to be stored in storage 96. The generation of the shearedimage is preferably performed line by line, whereby one line of thesheared image is held in cache memory 150 in a processor, preferably ina first level cache. FIG. 12 illustrates a sheared image line buffer 152for storing pixel values for one line of the cache storage and asaturation buffer 154 comprising one bit for each pixel to indicatewhether saturation has been reached for the pixel, as will be describedlater. Cache storage 156, which can be second level processor cache,contains blocks of retrieved voxel data.

Sheared image generation logic 158 is responsive to shear parametersfrom a shear table 160 (for example as computed in a view parameterdetermination process 90 of FIG. 4) to access contiguous voxel storagethat contain data for voxels needed for computing the pixels of the lineof the sheared image data.

The shear processing logic 158 is operable to accumulate partial opacity(intensity) values of a line of pixels from the opacity values ofrespective sets of voxel values. A first set of voxel values (from afirst row of voxels as identified using a first entry in the sheartable) is stored in first pass. Then, a second set of voxel values (froma second row of voxel values as identified by a second entry in theshear table) are combined with the opacity values for the pixels, asappropriate. This process repeats for successive rows until the pixelvalues for the respective pixels have been accumulated. If at any timeduring this process, a pixel value reaches a desired degree of opacity,then a flag is set at a location in the saturation buffer for the pixelconcerned to indicate that no further calculations are needed for thatpixel. This approach is a bit like “early ray termination” to avoidunnecessary processing of voxels that will not contribute to a pixel ofthe sheared image, for example because the pixel has already reached amaximum opacity. Thus, the provision of the saturation buffer enhancesprocessing efficiency by avoiding unnecessary data retrieval andcomputation operations.

In the above description, the assumption is made that for each stepthrough the object volume, only one voxel value is utilised (so-calledpoint sampling). However, in an embodiment of the invention, it is alsopossible to factor in relative contributions of adjacent voxel valuesdepending upon the intersection between the view vector and the centresof the voxels. As an illustration with reference to FIG. 13, a notionalray 170 parallel to the view vector for generating a pixel value passesat an intersection between four voxels (as seen looking along the viewvector). In such a case, a 25% contribution from the opacity values foreach of the four voxels could be used to generate a value to be added tothe intensity value for the pixel concerned. The proportionalcontribution can be adjusted according to the relative displacements ofthe notional ray 170 from the respective voxel centres. To provide suchproportional processing increases the processing load, but can lead toenhanced clarity and definition of a final image.

In one embodiment of the invention, the contribution of four voxels iscomputed by bi-linear processing, as represented in FIG. 14. In otherwords, the value of a notional ray 170 in FIG. 14 is determined bylinear interpolation in the vertical direction (as shown in FIG. 14)followed by linear interpolation in the horizontal direction (as shownin FIG. 14), that is in accordance with the following formulae:G=E(GF/EF)+F(EG/EF), whereE=A(CE/AC)+C(AE/AC); andF=B(FD/BD)+D(BF/BD).where A, B, C, D, E and F represent values at the respective positionsshown in FIG. 14. A, B, C and D represent the centres of four voxels andG is the point at which the view vector passes the plane that includesthe four voxel centres.

FIG. 15 represents the warp processing stage of 96 of FIG. 4 in moredetail.

In Step 150, processing is performed to generate the sheared image.

In Step 180, warp processing takes place using matrix mathematics toprovide an image rotation, scale and shear operations. Thus the positionfor the pixel data for each pixel of the row of the sheared image ischanged in accordance with warp factors to position that pixel data atan appropriate position in the final image. In other words, the pixelvalues that form a horizontal row in the sheared image may not form ahorizontal row in the final image.

In Step 182, final image assembly is performed. The final image can bedisplayed, for example, on the display device of 14 of the workstation10 of FIG. 1, or printed, stored or transmitted to another location,workstation or the like, as required.

Thus, there has been described, a computer program and acomputer-implemented system and method for generating a two-dimensionalimage of a volume data set representing an object volume from aselectable viewpoint. An object volume data set includes voxel valuesordered by voxels along a row that extends in a first direction, rowsacross a plane that extends in the first direction and a seconddirection, and planes through an object volume that extend in the firstand second directions and a third direction. In response to thedefinition of a view vector defining a view direction with respect to aviewpoint, shear and warp mappings are determined, as is which of thefirst, second and third directions is closest to the view vector. Pixelsof a two-dimensional sheared image having a plurality of lines of pixelsare then determined from voxel values of the object volume data setidentified by the shear mapping. Where the view vector is closest to thefirst direction, the shear mapping maps rows of voxels in the firstdirection onto lines of pixels of the sheared image An output image isthen determined by mapping pixels of the sheared image according to thewarp mapping. This output image can be displayed, printed, sent to aremote location or otherwise communicated to a user.

Thus, for example, although the described embodiment employs a computerprogram operating on a conventional computer, for example a conventionalcomputer workstation, in other embodiments special purpose hardwarecould be used. For example, at least some of the functionality could beeffected using special purpose circuits, for example a fieldprogrammable gate array (FPGA) or an application specific integratedcircuit (ASIC). Also, multi-thread processing or parallel computinghardware could be used for at least some of the processing. For example,different threads could be used to generate respective alternate rows ofthe sheared image.

FIG. 16 shows a particularly advantageous hardware implementationembodying the invention which makes it possible to render in real-time.The figure shows a CT system 300 comprising a CT scanner 302 and avolume CT construction unit 304 operatively connected to transfer CTdata to a computer system 500 via a memory unit 400 comprising a volumememory 404 and a routing unit 402 employing direct memory access (DMA).The lines of pixels are shown schematically, with the first four linesbeing labelled LP1, LP2, LP3 and LP4. The function of the memory unit400 is to provide an efficient transfer the CT data from the CT system300 to the computer system 500. It will be understood that the transferof the CT data into the computer system 500 may be carried out in manyother ways, including directly without an intermediary such as thememory unit 400.

The computer system 500 comprises a plurality of processing elements504, 506 and 508, three of which (PE₁, PE₂ and PE₃) are shown, by way ofexample. Each processing element has local memory, for example randomaccess memory (RAM), such as static RAM (SRAM) or dynamic RAM (DRAM).The illustrated processing elements 504, 506 and 508 have respectivelocal memories 524, 526 and 528 (M1, M2 and M3).

The DMA routing unit 402 has data communication links to each processingelement 504, 506, 508 . . . . The DMA routing unit 42 also has a datacommunication link 507 to an interface 509 of the computer system. Thelink 507 serves to carry control data relevant to the data communicationfrom the volume memory 404 to the processing elements 504, 506, 508 . .. , as will be explained further below. The computer system 500 furthercomprises the following standard components: a chipset 513; a PCI bus530 interconnecting the processing elements 504, 506, 508 . . . with thechipset 513; one or more main processors 514 (two processors P1 and P2are shown) connected to the chipset 513; and some memory 515 (shown asDRAM) also connected to the chipset 513. The computer system 500 furthercomprises a display 516 connected to the chipset 513 by a busconnection.

The embodiment of FIG. 16 is based on the understanding that, by usingthe method of rendering voxels described further above, rows of voxelswhich go to make up a line of pixels in the displayed image areprocessed independently of the other voxels. This allows voxelsassociated with different lines of pixels to be processed in parallel.The embodiment of FIG. 16 is one example of how such parallel processingof the pixel line data can be carried out in practice. However, it willbe understood that the underlying concept of this embodiment is thateach voxel data set destined to contribute to a given pixel line in thefinal image can be processed independently, e.g. in parallel. Theadoption of parallel processing can significantly increase theprocessing speed and allows real-time display using relatively modesthardware. For example, with the example system shown in FIG. 16 itshould be possible to generate 3D images of 512×512×24 bit pixels at 10frames per second based on current personal computer (PC) performance.

Returning to the example, if n processing elements are used then n linesof pixels of the rendered image can be calculated simultaneously witheach processing element 504, 506, 508 . . . being assigned to processthe values of a different lines of pixels. The pixel values for eachline of pixels are calculated independently by the processing elements,as described earlier. Starting with the first row of voxels in the K=0plane, voxel values are shifted by the DMA routing unit 402 to the firstprocessing element 504. The DMA routing unit 402 next shifts the secondrow of voxel data to the second processing element 506, and the thirdrow to the third processing element 508, and so on until all theprocessing elements have received a row of data. Each processing elementstores the received row of voxel data in its local memory 524, 526, 528. . . which acts as a buffer.

Each processing element calculates a contribution to the pixels of itsassigned pixel line from each of the voxel elements of that row. Nextthe DMA routing unit 402 moves on to the next plane back, that is K=1,and begins again sending voxel values of the first row in the K=1 planeto processing element PE₁, and for the nth row in that plane to the nthprocessing element, i.e. PE_(n).

As explained earlier, to allow for the fact that overlaps of voxel rowsmay occur, the voxel value to contribute to a pixel may need to becalculated from a linear interpolation of neighbouring voxels, that isfrom four voxels. Each processing element also requires the voxel valuesof voxels neighbouring those in its row. Therefore, the DMA routing unitsends a voxel line to two processing elements responsible for adjacentlines and both processing elements store the data. In a specificexample, each processing element is provided with sufficient localmemory to store up to four rows of voxel data and one line of pixeldata.

Once the contributions from a voxel row have been calculated, the voxeldata is discarded from the local memory concerned, and the data for therow behind, in the next k-plane, is received and stored. This continuesuntil final pixel values for the pixel line have been achieved, that isuntil the contributions from all the voxels have been added.

Once each pixel line has been calculated, this data is passed out to thechipset 513 for display on the display 516. The stored voxel data andpixel data in the local memories of the processing elements is thendiscarded. The process then starts again for the next pixel line.

Thus the DMA routing unit 402 will first fetch a line of pixels and shipit to, say, processing element 504. The DMA routing unit 402 ships allvoxel data for the layer of the volume which will make up one line ofpixels. The DMA routing unit 402 then ships voxel data for the nextlayer down to the next processing element 506, and so on.

The DMA routing unit 402 in a specific example is capable of fetching 1k bytes of volume data per transaction. This corresponds to one line of512 voxels along the i-axis. The DMA routing unit 402 receives controlinformation from the host by the data link 507 to determine which lineof voxels goes to which processing element. For this, a low bandwidthchannel such as a SCSI channel may be used.

The local memory of each processing element is operable to hold: a lineof pixels of the sheared image; up to four rows of voxels; as well as asimple program and parameters required for projecting voxels to pixels.Thus a small amount of local memory is sufficient, for example 32 KB–272KB. There is no need for the processing elements to interact with eachother as they do not need to exchange data in order to carry out theircalculations.

It will be understood that the way in which the processing elements areconnected to the host computer system may take a variety of forms. InFIG. 16, a system in which each processing element is connected to acommon PCI bus is shown, but this is merely one example. An alternativeis an external digital signal processor (DSP) cabinet with a single PCIinterface to the host. Another alternative is a system where multipleprocessing elements are combined into an array clip, such as PixelFusion (Trademark). The rest of the host system is usually a simple PChost, but a unit system could also be used.

The system is capable of providing outstanding rendering performancecompared to known systems. It should be possible to perform real-timerendering of volumes consisting of 512×512×256×16 bit voxels arriving at10 volumes per second. In a preferred example, the system generates 3Dimages of 512×512×24 bit pixels at 10 frames per second, irrespective ofthe content of the data and the viewing parameters.

In the described embodiments, a computer implementation employingcomputer program code for storage on a data carrier or in memory can beused to control the operation of the processor of the computer. Thecomputer program can be supplied on a suitable carrier medium, forexample a storage medium such as solid state memory, magnetic, opticalor magneto-optical disk or tape based media. Alternatively, it can besupplied on a transmission medium, for example a medium with a carriersuch as a telephone, radio or optical channel.

It will be appreciated that although particular embodiments of theinvention have been described, many modifications/additions and/orsubstitutions may be made within the scope of the present invention.Accordingly, the particular example described is intended to beillustrative only, and not limitative.

REFERENCES

[1] U.S. Pat. No. 5,295,488

[2] U.S. Pat. No. 5,787,889

1. A computer-implemented method of generating a two-dimensional image of a volume data set representing an object volume from a selectable viewpoint, the method comprising: providing, in storage, an object volume data set comprising voxel values ordered by voxels along a row that extends in a first direction, rows across a plane that extends in the first direction and a second direction, and planes through an object volume that extends in the first and second directions and a third direction, whereby the voxel values for voxels in the first direction are stored sequentially in storage; in response to definition of a view vector defining a view direction with respect to a viewpoint, determining shear and warp mappings and determining one of the first, second and third directions as being closest to the view vector; deriving pixels of a two-dimensional sheared image having a plurality of lines of pixels from voxel values of the object volume data set identified by the shear mapping, wherein, irrespective of which direction is closest to the view vector, the shear mapping maps rows of voxels in the first direction onto lines of pixels of the sheared image; and deriving an output image by mapping pixels of the sheared image according to the warp mapping.
 2. The method of claim 1, wherein the generation of the pixels of the two-dimensional sheared image is performed line by line of the sheared image.
 3. The method of claim 1, wherein successive lines of the sheared image are held in a sheared image buffer.
 4. The method of claim 1, wherein the derivation of a line of pixels of the sheared image includes identifying one or more rows of voxels in the first direction that map onto the line of pixels of the sheared image, and accumulating contributions from voxels from said one or more rows of voxels to derive respective pixel values of the line of pixels of the sheared image.
 5. The method of claim 4, wherein the accumulation of contributions for a pixel of the sheared image is terminated when a value representative of a predetermined intensity or opacity is reached.
 6. The method of claim 1, comprising pre-processing of the volume data set to identify voxels having voxel values that exceed a predetermined degree of opacity.
 7. The method of claim 6, wherein the pre-processing comprises generating a volume data set encoded as runs of values having opacities greater than said predetermined opacity separated by skip values.
 8. The method of claim 6, comprising determining a record identifying voxels with opacity values greater than the predetermined opacity.
 9. The method of claim 5, wherein voxels with voxel values less than or equal to the predetermined value are ignored during the derivation of pixels of the two-dimensional sheared image.
 10. The method of claim 1, wherein the object volume data set is scanned data.
 11. The method of claim 10, wherein the object volume data set comprises scanned data generated using one or more of the following scanning techniques: particle and/or electromagnetic energy scanning, sound or ultrasound scanning.
 12. The method of claim 1, wherein the object volume data set comprises a plurality of voxel row sets, each of which makes up a line of pixels of the sheared image, and wherein the step of deriving the pixels comprises independent processing of different ones of the voxel row sets.
 13. The method of claim 12, wherein the independent processing comprises processing at least two of the voxel row sets in parallel with each other.
 14. A computer program product for generating a two-dimensional image of a volume data set representing an object volume from a selectable viewpoint, the computer program comprising program code operable: to access from storage, an object volume data set comprising voxel values ordered by voxels along a row that extends in a first direction, rows across a plane that extends in the first direction and a second direction, and planes through an object volume that extends in the first and second directions and a third direction, the voxel values for voxels in the first direction being stored sequentially in storage; to determine, in response to definition of a view vector defining a view direction with respect to a viewpoint, shear and warp mappings and determining one of the first, second and third directions as being closest to the view vector; to derive pixels of a two-dimensional sheared image having a plurality of lines of pixels from voxel values of the object volume data set identified by the shear mapping, wherein, irrespective of which direction is closest to the view vector, the shear mapping maps rows of voxels in the first direction onto lines of pixels of the sheared image; and to derive an output image by mapping pixels of the sheared image according to the warp mapping.
 15. The computer program product of claim 14, comprising program code operable to perform the generation of the pixels of the two-dimensional sheared image line by line of the sheared image.
 16. The computer program product of claim 14, comprising program code operable to store successive lines of the sheared image a sheared image buffer.
 17. The computer program product of claim 14, comprising program code operable, for deriving a line of pixels of the sheared image, to identify one or more rows of voxels in the first direction that map onto the line of pixels of the sheared image, and to accumulate contributions from voxels from said one or more rows of voxels to derive respective pixel values of the line of pixels of the sheared image.
 18. The computer program product of claim 17, wherein the program code is operable to terminate accumulation of contributions for a pixel of the sheared image when a value representative of a predetermined intensity or opacity is reached.
 19. The computer program product of claim 14, wherein the volume data set is pre-processed to identify voxels having voxel values that exceed a predetermined degree of opacity.
 20. The computer program product of claim 19, wherein the pre-processing comprises generating a volume data set encoded as runs of values having opacities greater than said predetermined opacity separated by skip values.
 21. The computer program product of claim 19, wherein the computer program is operable to determine a record identifying voxels with opacity values greater than the predetermined opacity.
 22. The computer program product of claim 14, wherein the computer program is operable to ignore voxels with voxel values less than or equal to a predetermined value.
 23. The computer program product of claim 14, wherein the object volume data set is scanned data.
 24. The computer program product of claim 23, wherein the object volume data set comprises data generated using one or more of the following scanning techniques: particle and/or electromagnetic energy scanning, sound or ultrasound scanning.
 25. The computer program product of claim 14, wherein the object volume data set comprises a plurality of voxel row sets, each of which makes up a line of pixels of the sheared image, and wherein the step of deriving the pixels comprises independent processing of different ones of the voxel row sets.
 26. The computer program product of claim 25, wherein the independent processing comprises processing at least two of the voxel row sets in parallel with each other.
 27. The computer program product of claim 14 comprising computer program code on a carrier medium.
 28. The computer program product according to claim 27, wherein the carrier medium is a storage medium.
 29. The computer program product according to claim 28, wherein the carrier medium is a transmission medium.
 30. A computer implemented system comprising a processor and main memory and a computer program product according to claim
 14. 31. A system for generating a two-dimensional image of a volume data set representing an object volume from a selectable viewpoint, the system comprising: storage for an object volume data set comprising voxel values ordered by voxels along a row that extends in a first direction, rows across a plane that extends in the first direction and a second direction, and planes through an object volume that extends in the first and second directions and a third direction, the voxel values for voxels in the first direction being stored sequentially in storage; a view processor operable to determine, in response to definition of a view vector defining a view direction with respect to a viewpoint, shear and warp mappings and determining one of the first, second and third directions as being closest to the view vector; a shear processor operable to derive pixels of a two-dimensional sheared image having a plurality of lines of pixels from voxel values of the object volume data set identified by the shear mapping, wherein, irrespective of which direction is closest to the view vector, the shear mapping maps rows of voxels in the first direction onto lines of pixels of the sheared image; and a warp processor operable to derive an output image by mapping pixels of the sheared image according to the warp mapping.
 32. The system of claim 31, wherein the shear processor is operable to perform the generation of the pixels of the two-dimensional sheared image line by line of the sheared image.
 33. The system of claim 31, wherein the shear processor is operable to store successive lines of the sheared image a sheared image buffer.
 34. The system of claim 31, wherein the shear processor is operable, for deriving a line of pixels of the sheared image, to identify one or more rows of voxels in the first direction that map onto the line of pixels of the sheared image, and to accumulate contributions from voxels from said one or more rows of voxels to derive respective pixel values of the line of pixels of the sheared image.
 35. The system of claim 34, wherein the shear processor is operable to terminate accumulation of contributions for a pixel of the sheared image when a value representative of a predetermined intensity or opacity is reached.
 36. The system of claim 31, comprising a pre-processor operable to identify voxels having voxel values that exceed a predetermined degree of opacity.
 37. The system of claim 36, wherein the pre-processor is operable to generate a volume data set encoded as runs of values having opacities greater than said predetermined opacity separated by skip values.
 38. The system of claim 36, wherein the pre-processor is operable to determine a record identifying voxels with opacity values greater than the predetermined opacity.
 39. The system of claim 31, wherein the shear processor is operable to ignore voxels with voxel values less than or equal to a predetermined value.
 40. The system of claim 31, wherein the storage means comprises a main storage and a cache storage, the volume data set being held in the main storage, and wherein blocks of contiguously ordered voxel values being processed are temporarily transferred from main the storage to the cache storage.
 41. The system of claim 40, wherein the cache storage is a second-level cache memory of a microprocessor.
 42. The system of claim 40, wherein the cache storage is operable to hold all data required for processing at least one scan line of the two-dimensional image in memory.
 43. The system of claim 31, comprising sheared image storage for storing the sheared image.
 44. The system of claim 43, wherein the sheared image storage comprises a first-level cache memory of a microprocessor for accumulating a line of pixels of the sheared image, and further storage for storing complete lines of the sheared image.
 45. The system of claim 31, wherein the object volume data set is scanned data.
 46. The system of claim 45, wherein the object volume data set comprises scanned data generated using one or more of the following scanning techniques: particle and/or electromagnetic energy scanning, sound or ultrasound scanning.
 47. The system of claim 31, wherein the storage is configured to store the object volume data set as a plurality of voxel row sets, each of which makes up a line of pixels of the sheared image, and wherein the shear processor comprises a plurality of processing elements configured to independently process different ones of the voxel row sets.
 48. The system of claim 47, wherein the processing elements are configured to parallel process the voxel row sets.
 49. A computer-implemented method of generating a two-dimensional output image from an object volume data set, the method comprising: (a) providing an object volume data set comprising voxel values ordered by voxels along a row that extends in a first direction, rows across a plane that extends in the first direction and a second direction, and planes through an object volume that extends in the first and second directions and a third direction, whereby the voxel values in the first direction are stored sequentially in storage; (b) providing a view vector and a viewpoint, defining a view direction according to the view vector and the viewpoint, and determining one of the first, second and third directions as being closest to the view vector; (c) determining a shear mapping from the object volume data set to a two-dimensional sheared image; (d) determining a warp mapping from the two-dimensional sheared image to a two-dimensional output image; (e) deriving pixels of a two-dimensional sheared image having a plurality of lines of pixels from voxel values of the object volume data set identified by the shear mapping, wherein, irrespective of which direction is closest to the view vector, the shear mapping maps rows of voxels in the first direction onto lines of pixels of the sheared image; and (f) deriving the two-dimensional output image by mapping pixels of the sheared image according to the warp mapping. 